package com.munichosica.myapp.controller.Proveedor;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.munichosica.myapp.dto.Proveedor;
import com.munichosica.myapp.dto.Usuario;
import com.munichosica.myapp.exceptions.ProveedorDaoException;
import com.munichosica.myapp.factory.ProveedorDaoFactory;

@Controller
@RequestMapping("/Proveedor")
public class ProveedorController {
	
	Logger logger=Logger.getLogger(ProveedorController.class);

	@RequestMapping(value="Listar.htm", method=RequestMethod.POST)
	public @ResponseBody List<Proveedor> listar(String criterio, String texto, String estado){
		List<Proveedor> lista=null;
		try {
			lista = ProveedorDaoFactory.create().listarPorCriterio(criterio, texto, estado);
		} catch (ProveedorDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return lista;
	}
	
	@RequestMapping(value="Procesar.htm",method=RequestMethod.POST)
	public @ResponseBody String procesar(HttpServletRequest request, Proveedor proveedor){
		try {
			HttpSession session=request.getSession(true);
			Usuario usuario=(Usuario) session.getAttribute("USUARIO");
			
			if(proveedor.getProcodigoI()==0){
				proveedor.setProusuarioregistraV(usuario.getUsuusuarioV());
				proveedor.setProipV(request.getRemoteAddr());
				ProveedorDaoFactory.create().insertar(proveedor);
			}else{
				proveedor.setProusuarioactualizaV(usuario.getUsuusuarioV());
				proveedor.setProipV(request.getRemoteAddr());
				ProveedorDaoFactory.create().modificar(proveedor);
			}
		} catch (ProveedorDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return String.valueOf(proveedor.getProcodigoI());
	}
	
	@RequestMapping(value="Obtener.htm", method=RequestMethod.GET)
	public @ResponseBody Proveedor obtener(@RequestParam("codigo") Integer codigo){
		Proveedor proveedor=null;
		try {
			proveedor = ProveedorDaoFactory.create().obtener(codigo);
		} catch (ProveedorDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return proveedor;
	}
	
	@RequestMapping(value="Eliminar.htm", method=RequestMethod.GET)
	public void eliminar(HttpServletRequest request, @RequestParam("codigo") Integer codigo){
		try {
			HttpSession session=request.getSession(true);
			Usuario usuario=(Usuario) session.getAttribute("USUARIO");
			Proveedor proveedor=new Proveedor();
			proveedor.setProcodigoI(codigo);
			proveedor.setProusuarioactualizaV(usuario.getUsuusuarioV());
			proveedor.setProipV(request.getRemoteAddr());
			ProveedorDaoFactory.create().eliminar(proveedor);
			logger.info("ProveedorDaoFactory.create().eliminar(proveedor); CODIGO: "+proveedor.getProcodigoI());
		} catch (ProveedorDaoException e) {
			logger.error(e.getMessage(), e);
		}
	}
}
